//
// Ephi - simulation of magnetic fields and particles
// Copyright (C) 2007 Indrek Mandre <indrek(at)mare.ee>
// For more information please see http://www.mare.ee/indrek/ephi/
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//

// Polywell simulation. Simulate the movement of a single electron
// inside the polywell magnetic containment system.

#ifndef __polywell_conf_hpp__
#define __polywell_conf_hpp__

/** Create a dodecahedron polywell. */
extern void make_polywell_dodecahedron (Statics& statics, prec_t R, prec_t magnet_radius,
    prec_t magnet_spacing, prec_t I, prec_t q_per_m = 0, const CoilFactory& cf = ShapedCoilFactory());
/** Create a cube polywell. */
extern void make_polywell_cube (Statics& statics, prec_t R, prec_t magnet_radius,
    prec_t magnet_spacing, prec_t I, prec_t q_per_m = 0, const CoilFactory& cf = ShapedCoilFactory());
/** Create a solenoid. */
extern void make_solenoid (Statics& statics, size_t n, prec_t R, prec_t wire_radius,
    prec_t spacing, prec_t I, const CoilFactory& cf = ShapedCoilFactory());

extern const transf3d_pair& cube_polywell_transform24 (vect3d& p);
extern const transf3d_pair* get_cube_polywell_transforms24 ();
extern const transf3d_pair& cube_polywell_transform48 (vect3d& p);
extern const transf3d_pair* get_cube_polywell_transforms48 ();

#endif // !__polywell_conf_hpp__

